package br.sddp.modelo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import br.sddp.util.Criptografia;

@Entity
@NamedQueries({
	@NamedQuery(name="Usuario.FindAll", query="SELECT u FROM Usuario u WHERE u.ativo = true")
})
public class Usuario implements Serializable {


	private static final long serialVersionUID = 4439714715764776172L;

	@Id @GeneratedValue
	private Long idUsuario;
	
	@Column(unique=true)
	private String login;
	
	private String nome;
	private String senha;	
	private String perfil;
	
	/**
	 * true = usuario ativo, false = usuario desativado.
	 */
	private Boolean ativo;

	private String email;

	
	//Metodos construtores
	public Usuario() {}
	
	public Usuario(String nome, String login, String senha, String email, Boolean status, String perfil) {
		super();
		this.nome = nome;
		this.login = login;
		this.senha = Criptografia.encodePassword(senha);
		this.ativo = status;
		this.perfil = perfil;
		this.email = email;
	}
	
	//Metodos modificadores
	public Long getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Long idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Boolean getAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}
	
	public String getPerfil() {
		return perfil;
	}

	public void setPerfil(String perfil) {
		this.perfil = perfil;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}	
}
